package cn.jinzhu.hystrix;

import com.netflix.hystrix.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;

//hystrix的第二种请求命令，需要继承hystrixCommand，就是自定义设置一些超时时间等,以及配置降级
public class HelloCommand  extends HystrixCommand<String> {

   String name;
    RestTemplate restTemplate;

    public HelloCommand(Setter setter, RestTemplate restTemplate,String name) {
        super(setter);
        this.name=name;
        this.restTemplate = restTemplate;
    }


    @Override
    protected String run() throws Exception {
        int i = 1 / 0;//出现异常，里面降级进入到error  继承方式
        return restTemplate.getForObject("http://provider/hello2?name={name}",String.class);
    }

    @Override //降级，请求失败的回调，失败进到这里来
    protected String getFallback() {
        return "error"+getExecutionException().getMessage();//获取继承里面的降级异常
    }

    @Override
    protected String getCacheKey() {
        return name; //返回key,因为key是参数
    }
}
